<?php

require_once "lib/soap/nusoap.php";  
require_once "classes/classe_usuario.php";  
require_once "classes/classe_gasto.php";  
require_once "classes/classe_periodo.php";  
require_once "classes/classe_banco.php";
require_once "classes/classe_usuario_base.php";
require_once "classes/classe_gasto_base.php";
require_once "classes/classe_periodo_base.php";
require_once "constantes.php";

  
$ns = "http://".$_SERVER['HTTP_HOST']."/tcc/";  
//instancia a classe servidor  
$server = new soap_server();  
$server->configureWSDL('MoodleServices - WebService SCGP', $ns);
$server->wsdl->schemaTargetNamespace = $ns;  


//registra as funcoes(servicos) no server.
$server->register('sendBackup' , array('dados'=>'xsd:string','nomeUsuario'=>'xsd:string','senha'=>'xsd:string','codigoacesso'=>'xsd:integer'), array('saida' => 'xsd:string'), $ns);
$server->register('getBackup' , array('nomeUsuario'=>'xsd:string','senha'=>'xsd:string','codigoacesso'=>'xsd:integer'), array('saida' => 'xsd:string'), $ns);

$server->service( $HTTP_RAW_POST_DATA );  



function sendBackup($dados,$nomeUsuario,$senha,$codigoacesso){

$baseUsuario = new BaseUsuario();
$temAcesso = $baseUsuario->temAcesso($nomeUsuario,$senha,$codigoacesso);

if($temAcesso == false){
return ERRO_USUARIO_SEM_ACESSO;
}

$dadosEntidades = array();
$dadosEntidades = explode(SEPARADOR_ENTIDADES,$dados);

if(count($dadosEntidades) < 2){
    return ERRO_DADOS_BACKUP_INVALIDO;
}



# Salva os periodos e os gastos do usuario no banco.
$basePeriodo = new BasePeriodo();
$baseGasto = new BaseGasto();
$usuario = new Usuario();
$usuario = $baseUsuario->findUsuarioByname($nomeUsuario);

$sucesso = $basePeriodo->sendBackupPeriodo($dadosEntidades[0],$usuario->id);

if($sucesso == true){
$sucesso = $baseGasto->sendBackupGasto($dadosEntidades[1],$usuario->id);

if($sucesso == false){
    $basePeriodo->limparTabelaPeriodoByCodigoUsuario($usuario->id);
}
}


if($sucesso)
    return "true";
else
    return ERRO_OPERACAO_SQL;

}




function getBackup($nomeUsuario,$senha,$codigoacesso){

$retorno = "";
$baseUsuario = new BaseUsuario();
$basePeriodo = new BasePeriodo();
$baseGasto   = new BaseGasto();

$temAcesso = $baseUsuario->temAcesso($nomeUsuario,$senha,$codigoacesso);

if($temAcesso == false){
return ERRO_USUARIO_SEM_ACESSO;
}


$usuario = new Usuario();
$usuario = $baseUsuario->findUsuarioByname($nomeUsuario);

$dadosPeriodos = $basePeriodo->getBackupPeriodo($usuario->id);

if($dadosPeriodos != ""){

  $dadosGastos = $baseGasto->getBackupGasto($usuario->id);

    if($dadosGastos != "")
      $retorno = $dadosPeriodos."".SEPARADOR_ENTIDADES."".$dadosGastos;
    else
       $retorno = $dadosPeriodos;
   
}
else{
return "erro_semdados";
}

return $retorno;
}




?>